package com.alex.service.Search_Plans;

import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author: 张福垒
 * @Date: 2024/11/28 14:25
 * @Description:
 * @phone: 13864677931
 */
public class SearchPlanUtils {


    /**
     * 需要被过滤的单词
     *
     * @return
     */
    public static Set<String> enWordIgnore() {
        Set<String> set = new HashSet<>();
        set.add("a");
        set.add("an");
        set.add("and");
        set.add("are");
        set.add("as");

        set.add("at");
        set.add("be");
        set.add("but");
        set.add("by");
        set.add("for");

        set.add("into");
        set.add("is");
        set.add("it");

        set.add("such");
        set.add("about");
        set.add("after");
        set.add("all");
        set.add("also");

        set.add("am");
        set.add("any");
        set.add("can");
        set.add("do");
        set.add("from");

        set.add("had");
        set.add("has");
        set.add("have");
        set.add("he");
        set.add("her");

        set.add("here");
        set.add("him");
        set.add("his");
        set.add("i");
        set.add("if");

        set.add("in");
        set.add("its");
        set.add("just");
        set.add("me");
        set.add("my");

        set.add("now");
        set.add("of");
        set.add("off");
        set.add("on");
        set.add("one");

        set.add("only");
        set.add("onto");
        set.add("or");
        set.add("our");
        set.add("out");

        set.add("over");
        set.add("she");
        set.add("should");
        set.add("so");
        set.add("some");

        set.add("than");
        set.add("that");
        set.add("the");
        set.add("their");
        set.add("them");

        set.add("then");
        set.add("there");
        set.add("these");
        set.add("they");
        set.add("thing");

        set.add("things");
        set.add("this");
        set.add("those");
        set.add("though");
        set.add("through");

        set.add("to");
        set.add("until");
        set.add("up");
        set.add("upon");
        set.add("us");

        set.add("very");
        set.add("was");
        set.add("we");
        set.add("were");
        set.add("what");

        set.add("when");
        set.add("where");
        set.add("which");
        set.add("while");
        set.add("who");

        set.add("whom");
        set.add("whose");
        set.add("why");
        set.add("will");
        set.add("with");

        set.add("within");
        set.add("would");
        set.add("you");
        set.add("your");

        return set;
    }

    /**
     * 包含中文和中文符号
     *
     * @param str
     * @return
     */
    public static boolean isContainChinese(String str) {
        Pattern p = Pattern.compile("[\u4E00-\u9FA5|\\！|\\，|\\。|\\（|\\）|\\《|\\》|\\“|\\”|\\？|\\：|\\；|\\【|\\】]");
        Matcher m = p.matcher(str);
        if (m.find()) {
            return true;
        }
        return false;
    }

    /**
     * 只包含中文和中文符号
     *
     * @param str
     * @return
     */
    public static boolean isContainChineseOnly(String str) {
        // 修改后的正则表达式，确保每个特殊字符都被正确转义
        // 注意：对于"\\$"，我们使用了两次转义符，因为第一次是为了让Java编译器识别为单个反斜杠，
        // 第二次是给正则表达式引擎用的，让它知道这是要匹配一个实际的"$"字符。
        Pattern p = Pattern.compile("^[\\u4E00-\\u9FA5！，。( )《》“”？：；【】 \\d-\"\\$]+$");
        Matcher m = p.matcher(str);
        return m.matches();
    }


    /**
     * 必须同时包含中文和英文
     *
     * @param str
     * @return
     */
    public static boolean isContainChineseAndEnglish(String str) {
        if (str == null || str.isEmpty()) {
            return false;
        }

        // 正则表达式匹配任何中文汉字
        Pattern chinesePattern = Pattern.compile("[\\u4E00-\\u9FA5]");
        Matcher chineseMatcher = chinesePattern.matcher(str);

        // 正则表达式匹配任何英文字母（包括大小写）
        Pattern englishPattern = Pattern.compile("[a-zA-Z]");
        Matcher englishMatcher = englishPattern.matcher(str);

        // 检查是否同时存在中文和英文
        return chineseMatcher.find() && englishMatcher.find();
    }

}
